package crawler4j.crawlerWeb;

import java.util.Arrays;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import crawler4j.configuracao.Parametros;
import crawler4j.modelo.Pagina;

public class HTMLJsoup {  

	public HTMLJsoup(String html) {

		try {
			Document doc = Jsoup.parse(html);
			//Elements body = doc.body().children();

			Elements descricao = doc.select(Parametros.DESCRICAO);
			Elements palavrasChave = doc.select(Parametros.PALAVRAS_CHAVE);

			Elements url = doc.select(Parametros.URL);
			Elements titulo = doc.select(Parametros.TITULO);
			Elements tipoPagina = doc.select(Parametros.TIPO_PAGINA);
			Elements imagem = doc.select(Parametros.IAMGEM);
			Elements video = doc.select(Parametros.VIDEO);

			Elements duracao = doc.select(Parametros.DURACAO);
			Element autor = doc.getElementById(Parametros.AUTOR);
			if (null != autor && null != autor.child(1)) {
				autor = doc.getElementById(Parametros.AUTOR).child(1);
			}
			Elements likes = doc.select(Parametros.LIKES);
			Elements dislikes = doc.select(Parametros.DISLIKES);
			Elements data = doc.select(Parametros.DATA);
			Elements categoria = doc.select(Parametros.CATEGORIA);
			Element visualizacoes = doc.getElementById(Parametros.VISUALIZACOES);
			if (null != visualizacoes && null != visualizacoes.child(0)) {
				visualizacoes = doc.getElementById(Parametros.VISUALIZACOES).child(0);
			}


			String idPag = "";

			if (!tipoPagina.isEmpty() && tipoPagina.first().attr("content").equals("video")) {

				Pagina pagina = new Pagina();

				if (null != descricao && !descricao.isEmpty()) {
					pagina.setDescricao(descricao.first().attr("content"));
				}
				
				if (null != palavrasChave && !palavrasChave.isEmpty()) {
					pagina.setPalavrasChave(Arrays.asList(palavrasChave.first().attr("content").split(",")));
				}

				if (null != url && !url.isEmpty()) {
					pagina.setUrl(url.first().attr("content"));
					idPag = pagina.getUrl().substring(pagina.getUrl().indexOf("v=")+2);
				}

				if (null != titulo && !titulo.isEmpty()) {
					pagina.setTitulo(titulo.first().attr("content"));
				}

				if (null != imagem && !imagem.isEmpty()) {
					pagina.setImagem(imagem.first().attr("content"));
				}

				if (null != video && !video.isEmpty()) {
					pagina.setVideo(video.first().attr("content"));
				}

				if (null != duracao && !duracao.isEmpty()) {
					pagina.setDuracao(duracao.first().attr("content"));
				}

				if (null != autor) {
					pagina.setAutor(autor.text());
					pagina.setUrlAutor(autor.attr("href"));
				}

				if (null != likes && !likes.isEmpty() && !"".equals(likes.text())) {
					pagina.setLikes(Integer.parseInt(likes.text().replace(".", "")));
				}

				if (null != dislikes && !dislikes.isEmpty() && !"".equals(dislikes.text())) {
					pagina.setDislikes(Integer.parseInt(dislikes.text().replace(".", "")));
				}

				if (null != data && !data.isEmpty()) {
					pagina.setData(data.text());
				}

				if (null != categoria && !categoria.isEmpty()) {
					pagina.setCategoria(categoria.text());
				}

				if (null != visualizacoes) {
					pagina.setVisualizacoes(Integer.parseInt(visualizacoes.text().replace(".", "")));
				}

				Parametros.getPaginasCache().put(idPag, pagina);
			}
		}
		catch(Exception erro) {
			erro.printStackTrace();
			System.out.println(erro.getMessage());
		}  
	} 
}
